<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">

<head>
<meta http-equiv="Content-Language" content="ja" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta name="author" content="FAL Labs" />
<meta name="keywords" content="Tokyo Cabinet, tokyocabinet, database, DBM" />
<meta name="description" content="homepage of Tokyo Cabinet" />
<link rel="contents" href="./" />
<link rel="alternate" href="index.html" hreflang="en" title="the English version" />
<link rel="stylesheet" href="common.css" />
<link rel="icon" href="icon16.png" />
<link rev="made" href="mailto:info@fallabs.com" />
<title>データベースマネージャ Tokyo Cabinet</title>
<script type="text/javascript">function startup(){
  var elem = document.getElementById("headline");
  if(elem){
    var now = new Date();
    if((now.getFullYear() + now.getMonth() + now.getDate() + now.getHours()) % 4 == 0){
      var label;
      switch((now.getMonth() + now.getDay() + now.getHours() + now.getMinutes()) % 24){
      default: label = "東京収納棚"; break;
      case 1: label = "Shibuya Cabinet"; break;
      case 2: label = "Harajuku Cabinet"; break;
      case 4: label = "Aoyama Cabinet"; break;
      case 5: label = "Gakudai Cabinet"; break;
      case 7: label = "Shinjuku Cabinet"; break;
      case 8: label = "Ikebukuro Cabinet"; break;
      case 10: label = "Akihabara Cabinet"; break;
      case 11: label = "Ueno Cabinet"; break;
      case 13: label = "Sugamo Cabinet"; break;
      case 14: label = "Akasaka Cabinet"; break;
      case 16: label = "Roppongi Cabinet"; break;
      case 17: label = "Yokohama Cabinet"; break;
      case 19: label = "Saitama Cabinet"; break;
      case 20: label = "Tokorozawa Cabinet"; break;
      case 22: label = "Kyoto Cabinet"; break;
      case 23: label = "Nagoya Cabinet"; break;
      }
      var text;
      switch((now.getMonth() + now.getDate() + now.getMinutes()) % 48){
      default:
        text = "世界最強絶対無敵電光石火疾風迅雷資料基盤管理器";
        switch(now.getSeconds()){
        case 0:
          label = "東京ラブストーリー";
          text = "そんなこと東京の女の子は全然気にしないよ…";
          break;
        case 20:
          label = "東京タワー";
          text = "〜オカンとボクと、時々、オトン〜";
          break;
        case 40:
          label = "東京青春朝焼物語";
          text = "今日から俺、東京の人になる";
          break;
        }
        break;
      case 1: text = "NDBMとは違うのだよ、NDBMとは！"; break;
      case 2: text = "Tokyo Cabinetは伊達じゃないっ！"; break;
      case 3: text = "こいつ…動くぞ…？"; break;
      case 5: text = "敢えて言おう、高速であると！"; break;
      case 6: text = "しかし、私もDBMのはずだ！"; break;
      case 7: text = "SQLで世界を変えれるって…おかしいんだよ！！ "; break;
      case 9: text = "今の私はTokyo Cabinetだ。それ以上でもそれ以下でもない。"; break;
      case 10: text = "私はBerkeleyとは関係ない。私はいつも一人のDBMだった。"; break;
      case 11: text = "逆立ちしたってDBMはRDBにはなれないからな。"; break;
      case 13: text = "見せてもらおうか！Berkeleyのデータベースの性能とやらを！"; break;
      case 14: text = "悲しいけどこれ、DBMなのよね。"; break;
      case 15: text = "そのDBMの性能で勝ったということを忘れるな！！"; break;
      case 17: text = "新しい時代を創るのはSQLではない！！"; break;
      case 18: text = "えぇぃ、マイナーチェンジのくせにっ！"; break;
      case 19: text = "あんなの飾りです！偉い人にはそれが分からんのですよ！"; break;
      case 21: text = "よくもこんなくたびれたDBMが現役でいられるものだ。"; break;
      case 22: text = "見える！私にもレコードが見える！"; break;
      case 23: text = "私の愛馬は凶暴です。"; break;
      case 25: text = "そんなRDBみたいな口の利き方、おやめなさい！"; break;
      case 26: text = "悪い人だ。GDBMをいじめる悪い人だ。"; break;
      case 27: text = "作戦は一刻を争う！"; break;
      case 29: text = "僕が一番トランザクションをうまく使えるんだ。"; break;
      case 30: text = "実は容量が足らんのです。"; break;
      case 31: text = "おれはDBMだ！ DBMでたくさんだっ！"; break;
      case 33: text = "遊びでやってるんじゃないんだよっ！！"; break;
      case 34: text = "あれはいいものだ！"; break;
      case 35: text = "人は時間さえも支配できる…。"; break;
      case 37: text = "この風！この肌触りこそDBMよ！ "; break;
      case 38: text = "さすがハッシュだ、なんともないぜ。"; break;
      case 39: text = "プロセッサの性能差が戦力の決定的な差でないことを見せてやる！"; break;
      case 41: text = "君は、生き延びる事ができるか…？ "; break;
      }
      elem.firstChild.nodeValue = label + ": " + text;
    }
  }
}
</script>
</head>

<body onload="startup();">

<h1 id="headline">Tokyo Cabinet: DBMの現代的な壱実装</h1>

<div class="note">Copyright (C) 2006-2012 FAL Labs</div>
<div class="note">Last Update: Sat, 18 Aug 2012 11:05:00 +0900</div>
<div class="navi">[<a href="index.html" hreflang="en">English</a>/<span class="void">Japanese</span>]</div>

<div class="logo"><img src="logo-ja.png" id="logo" alt="Tokyo Cabinet" width="300" height="110" /></div>

<hr />

<h2 id="overview">概要</h2>

<p>Tokyo Cabinetはデータベースを扱うルーチン群のライブラリです。データベースといっても単純なもので、キーと値のペアからなるレコード群を格納したデータファイルです。キーと値は任意の長さを持つ一連のバイト列であり、文字列でもバイナリでも扱うことができます。テーブルやデータ型の概念はありません。レコードはハッシュ表かB+木か固定長配列で編成されます。</p>

<p>Tokyo CabinetはGDBMやQDBMの後継として次の点を目標として開発されました。これらの目標は達成されており、Tokyo Cabinetは従来のDBMを置き換える製品だと言えます。</p>

<ul>
<li>空間効率の向上 : データベースファイルがより小さい</li>
<li>時間効率の向上 : 処理がより高速である</li>
<li>並列性の向上 : マルチスレッド環境での同時実行性能の向上</li>
<li>利便性の向上 : APIがより単純である</li>
<li>堅牢性の向上 : 不慮の事態でもデータベースファイルが壊れにくい</li>
<li>64ビット対応 : 巨大なメモリ空間とデータベースファイルを扱える</li>
</ul>

<p>Tokyo CabinetはC言語で記述され、CとPerlとRubyとJavaとLuaのAPIとして提供されます。Tokyo CabinetはC99およびPOSIX準拠のAPIを備えるプラットフォームで利用できます。Tokyo CabinetはGNU Lesser General Public Licenseに基づくフリーソフトウェアです。</p>

<hr />

<h2 id="documents">文書</h2>

<p>以下の文書を読んでください。ソースパッケージにも同じものが含まれています。</p>

<ul>
<li><a href="spex-ja.html">基本仕様書</a></li>
</ul>

<ul>
<li><a href="perldoc/">Perl用API仕様書</a></li>
<li><a href="rubydoc/">Ruby用API仕様書</a></li>
<li><a href="javadoc/">Java用API仕様書</a></li>
<li><a href="luadoc/">Lua用API仕様書</a></li>
</ul>

<ul>
<li><a href="tokyoproducts.pdf">プレゼンテーション</a></li>
<li><a href="benchmark.pdf">ベンチマークテストのレポート</a></li>
</ul>

<hr />

<h2 id="packages">ダウンロード</h2>

<p>以下のソースパッケージをダウンロードしてください。バイナリパッケージについては、各ディストリビュータのサイトをご覧ください。</p>

<ul>
<li><a href="pkg/">コアライブラリのソースパッケージ</a></li>
</ul>

<ul>
<li><a href="perlpkg/">Perl用API</a></li>
<li><a href="rubypkg/">Ruby用API</a></li>
<li><a href="javapkg/">Java用API</a></li>
<li><a href="luapkg/">Lua用API</a></li>
</ul>

<ul>
<li><a href="misc/">関連するパッケージ</a></li>
</ul>

<hr />

<h2 id="information">その他の情報</h2>

<p>Tokyo Cabinetは<a href="http://fallabs.com/">FAL Labs</a>が作成しました。作者と連絡をとるには、`info@fallabs.com' 宛に電子メールを送ってください。</p>

<p>Tokyo Cabinetの兄弟プロジェクトもあります。</p>

<ul>
<li><a href="http://fallabs.com/tokyotyrant/">リモートサービス（Tokyo Tyrant）</a></li>
<li><a href="http://fallabs.com/tokyodystopia/">全文検索システム（Tokyo Dystopia）</a></li>
<li><a href="http://fallabs.com/tokyopromenade/">コンテンツ管理システム（Tokyo Promenade）</a></li>
</ul>

<ul>
<li><a href="http://fallabs.com/kyotocabinet/">DBMの率直な実装（Kyoto Cabinet）</a></li>
</ul>

<hr />

</body>

</html>

<!-- END OF FILE -->
